package com.dmwork.service.interaction.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dmwork.service.interaction.entity.WorkCollect;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dmwork.service.interaction.entity.vo.WorkCollectAddVo;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 李天
 * @since 2021-03-20
 */
public interface WorkCollectService extends IService<WorkCollect> {

    /**
     * 取消收藏
     * @param workCollect 收藏信息
     */
    void removeCollect(WorkCollect workCollect);

    /**
     * 获取指定用户和其收藏分组的作品id列表
     * @param workCollect
     * @return
     */
    Page<WorkCollect> getWorkIdPage(WorkCollect workCollect, Integer page, Integer limit);

    /**
     * 根据收藏分组id和用户id批量取消收藏
     * @param workCollect
     */
    void removeBatchByCollectGroup(WorkCollect workCollect);

    /**
     * 批量取消收藏
     * @param customerId
     * @param collectGroupId
     * @param workIdList
     */
    void removeBatchCollect(String customerId, String collectGroupId, List<String> workIdList);

    /**
     * 添加收藏并指定多个收藏分组
     * @param workCollectAddVo 收藏信息
     * @param customerId 用户id
     */
    void addBatchCollect(WorkCollectAddVo workCollectAddVo, String customerId);

    /**
     * 获取作品的被收藏数
     * @param workId 作品id
     * @return
     */
    Integer getCollectCountByWorkId(String workId);

    /**
     * 批量获取多个作品的收藏数
     * @param workIdList
     * @return
     */
    Map<String, Integer> getBatchCollectCountByWorkIdList(List<String> workIdList);

    /**
     * 获取指定用户的作品收藏数
     * @param customerId
     * @return
     */
    Integer getCollectCountByCustomerId(String customerId);

    /**
     * 批量移动作品到指定收藏分组
     * @param customerId 用户id
     * @param collectGroupId 目标收藏分组id
     * @param originalGroupId 原分组id
     * @param workIdList 所有被批量移动的作品的id列表
     */
    void moveBatchCollect(String customerId, String collectGroupId, String originalGroupId, List<String> workIdList);
}
